<template>
  <!-- 登录表单的容器 -->
  <div class="login_container">
    <!-- 登录区域 -->
    <div class="login_box">
      <!-- 头像 -->
      <div class="avatar_box">
        <img src="../assets/img/timg.gif">
      </div>
      <!-- 表单 -->
      <el-form :model="loginForm" :rules="loginRules" ref="loginForm" label-width="0px" class="login_form">
        <el-form-item prop="username">
          <el-input v-model="loginForm.username" placeholder="请输入用户名称" prefix-icon="el-icon-user-solid"></el-input>
        </el-form-item>
        <el-form-item prop="password">
          <el-input v-model="loginForm.password" placeholder="请输入登录密码" prefix-icon="el-icon-lock" show-password></el-input>
        </el-form-item>
        <el-form-item prop="verifyCode">
          <div class="verifyCode_box">
            <el-input v-model="loginForm.code" placeholder="请输入手机验证码" prefix-icon="el-icon-mobile" class="verifyCode"></el-input>
            <img src="" @click="handleRefresh" ref="imgVerify" class="verifyCode_img"/>
          </div>
        </el-form-item>
        <el-form-item class="login_btn">
          <el-button type="primary" @click="submitForm('loginForm')">登录</el-button>
          <el-button @click="resetForm('loginForm')">重置</el-button>
        </el-form-item>
      </el-form>
    </div>
  </div>
</template>

<script>
import { login ,getCode} from '@/api/Users'

  export default {
  name: 'vueLogin',
  data () {
    return {
      loginForm: {
        username: '',
        password: '',
        code: '',
        checkNo: ''
      },
      loginRules: {
        username: [
          { required: true, message: '请输入用户名称', trigger: 'blur' },
          { min: 3, max: 16, message: '长度在 3 到 16 个字符', trigger: 'blur' }
        ],
        password: [
          { required: true, message: '请输入登录密码', trigger: 'blur' },
          { min: 3, max: 16, message: '长度在 3 到 16 个字符', trigger: 'blur' }
        ],
        code: [
          { required: true, message: '请输入验证码', trigger: 'blur' }
        ]
      }
    }
  },
  mounted () {
    this.handleRefresh();
  },
    methods: {
    async handleRefresh() {
      const data =new Date().getTime() + parseInt(Math.random() * 9000);
      const url ="http://localhost:8081/verifCode/getVerifyCode?data="+data;
      this.$refs.imgVerify.src=url;
      //把检验码放进缓存
      sessionStorage.setItem("timeStamp",data);
    },
    submitForm (formName) {
      this.$refs[formName].validate((valid) => {
        if (valid) {
          //取出缓存中的检验码
          this.loginForm.checkNo=sessionStorage.getItem("timeStamp")
          console.log(this.loginForm)
          this.userLogin(this.loginForm)
        } else {
          console.log('error submit!!')
          return false
        }
      })
    },
    //用户登录
    async userLogin(){
      const { data: res} =await login(this.loginForm)
      if (res.code==200){
        this.$notify.success({
          title: '操作成功',
          message: '登录成功',
        })
        //清楚缓存中的检验码
        sessionStorage.removeItem("timeStamp")
        //登陆信息放进缓存
        sessionStorage.setItem("userInfo",JSON.stringify(res.data))
        sessionStorage.setItem("token",res.data.token)
        this.$router.push('/welcome')
      }else {
        this.$notify.error({
          message: res.message
        })
      }
    },
    resetForm (formName) {
      this.$refs[formName].resetFields()
    }
  }
}
</script>

<style lang="less" scoped>
  .login_container{
    height: 100%;
    background-color: aquamarine;
  }
  .login_box{
    width: 450px;
    height: 380px;
    background-color: #FFFFFF;
    border-radius: 3px;
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%,-50%);
    .avatar_box{
      width: 130px;
      height: 130px;
      border: 1px solid #EEEEEE;
      border-radius: 50%;
      padding: 10px;
      box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
      margin: -65px auto;
      background-color: #FFFFFF;

      img{
        width: 100%;
        height: 100%;
        border-radius: 50%;
        background-color: #EEEEEE;
      }
    }
    .login_form{
      position: absolute;
      bottom: 0px;
      width: 100%;
      padding: 0px 20px;
      box-sizing: border-box;

      .login_btn{
        display: flex;
        justify-content: flex-end;
      }

      .verifyCode_box{
        display: flex;
        .verifyCode{
          width: 70%;
          justify-content: left;
        }

        .verifyCode_img{
          width: 30%;
          height: 45px;
          justify-content: flex-end;
        }
      }
    }
  }

</style>
